// function sum() {
//     let num = 0
//     return function() {
//         num++
//         console.log(num)
//     }
// }

// let s = sum()
// s()
// s()
// s()
// s()

// let foo;
// (function otto() {
//     function outer() { // outer函数内部为闭包函数提供一个闭包作用域(outer)
//         let bar = "bar";
//         let inner = function() {
//             console.log(bar);
//             debugger; // 打一个debuuger断点，以便查看闭包作用域
//             console.log("inner function run.");
//         }
//         return inner;
//     }
//     foo = outer(); // 执行外部函数返回内部函数
//     foo(); // 执行内部函数
// })()

function fn() {
    let n = 1

    function fn1() {
        n++
        console.log(n)
    }
    
    return fn1
}

function foo() {
    const fn1 = fn()
    fn1()
    fn1()
    fn1()
}

foo()